﻿#region Using Directives
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#endregion

namespace Nihongo.GrammaticalPatterns
{
    /// <summary>
    /// 
    /// </summary>
    public class GoToDoSomething : IGrammar
    {
        private readonly Word _place;
        private readonly Word _what;
        private readonly Verb _action;
        private readonly Verb _direction;

        public GoToDoSomething(Verb action)    
        {
            _action = action;
        }

        public GoToDoSomething(Word place, Word what, Verb action)
        {
            _place = place;
            _what = what;
            _action = action;
            _direction = Verb.Create("行く", "いく");
        }

        public GoToDoSomething(Word place, Word what, Verb action, Verb direction)
        {
            _place = place;
            _what = what;
            _action = action;
            _direction = direction;
        }

        public Sentence PlainPresentForm
        {
            get
            {
                SentenceBuilder sentence = new SentenceBuilder();
                
                if (_place != null)
                {
                    sentence.Append(_place);
                    sentence.Append(Particle.E);
                }
                if (_what != null)
                {
                    sentence.Append(_what);
                    sentence.Append(Particle.Wo);
                }

                sentence.Append(_action.Root);
                sentence.Append(Particle.Ni);
                sentence.Append(_direction.PlainPresentForm);

                return sentence.ToSentence();
            }
        }

        public Sentence PlainPastForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence PlainPresentNegativeForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence PlainPastNegativeForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence MasuPresentForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence MasuPresentNegativeForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence MasuPastForm
        {
            get { throw new System.NotImplementedException(); }
        }

        public Sentence MasuPastNegativeForm
        {
            get { throw new System.NotImplementedException(); }
        }

        
    }
}